%{
#include "y.tab.h"
  int lexeme = 0, line = 1;
%}

%x COM

%%

"/*" { BEGIN COM; }
<COM>"*/" { BEGIN INITIAL; }
<COM>.
<COM>\n { line++; }


[ \t]       
"int"       { lexeme++; return INT; }
"static"    { lexeme++; return STATIC; }
"void"      { lexeme++; return VOID; }

"||"        { lexeme++; return (OU); }
"&&"        { lexeme++; return (ET); }
"=="        { lexeme++; return (EGAL); }
"!="        { lexeme++; return (DIF); }
"<="        { lexeme++; return (INF_EG); }
">="        { lexeme++; return (SUP_EG); }

"if"        { lexeme++; return (IF); }
"while"     { lexeme++; return (WHILE); }
"else"      { lexeme++; return (ELSE); }
"return"    { lexeme++; return (RETURN); }
"exit"      { lexeme++; return (EXIT); }
"read_int"  { lexeme++; return (READ); }


 /* A la rencontre d'un caractère de ponctuation simple, retourner le token correspondant */ 
[,;[\]\(\)\+\-\*\/\%\<\>\=\!\{\}]        { lexeme++; return yytext[0]; }

[a-zA-Z][a-zA-Z0-9\_]*    { yylval.name = yytext; lexeme++; return ID; }

[0-9]*      { yylval.intval = atoi(yytext); lexeme++; return ENTIER; }

.           { yyerror("Illegal character"); 
              printf("%s\n", yytext);
            }

\n         { lexeme = 0; line++; }

%%
